Tangoe Mobile REST API
Support Request
Mobile incident management or what we refer to as support requests can accommodate different tiers of support. We have two basic ticket types in our system. Call Logs, the record of the live incoming call and support request, a non-live asynchronous support ticket where a user goes into their system and fills out an incident ticket and it then gets routed to Tangoe to be worked by our Account Specialist.
To begin a two-way communication between systems, Tangoe would provide an endpoint URL and an API Token and in return would need similar credentials. The first API created would be a support request to capture the incident followed by the interaction endpoint where the user would add comments about the support request. On the reverse side, the Tangoe Account Specialist would interact and close the support request.
A process diagram or some mapping to capture how the client will envision each scenario might work will help to get this collaboration started. See figure 1 for an example flow chart. The data payload that should be sent to Tangoe will be formatted as shown in Figure 2. Any attributes from the json response payload Figure 3 can be captured and sent back with the closure payload. Tangoe will need to know what information should be sent back upon the closure of the support request. See Figure 4 for a simple closure payload.
Essentially, a mobile incident ticket is opened on the client-side and is routed to Tangoe based on certain conditions. Tangoe will work the ticket and change the state to one of the three listed below. The state change should reflect on both sides.
States and definitions to represent the current request status:
- Externally Queued - Resolution is pending information from a third-party source.
- Closed - The request has been resolved and no longer requires attention.
- Canceled - Deletes the request from reports on active requests. No further action is required.
Tangoe is not going to be one-to-one congruent with all the fields in other ticketing systems. Anything that doesnāt map directly from your system to our system, we suggest putting in the text field.
Figure 2:
Support Request Payload Attributes
attribute | required | type | description |
---|---|---|---|
text | yes | string | Concatenate all details like title, description, comments here. |
requestor_name | yes | string | This is an arbitrary string field but if you want to correlate this to a user, you will need to send an employee_id as a query parameter. |
requestor_number | yes | string | Phone number of the requestor. |
request_type | yes | string | This will be mapped to specific types in our system. |
external_source_id | yes | string | Clients ticket ID. When we update, we will pull from this field |
device_type | no | string | This is based on a finite list of values. Typically, this would just be āsmart phoneā or ātabletā. - Smart Phone |
vip | no | boolean | We have 2 priority options. Either itās a high priority or itās not. vip=true or vip=false. |
Example Support Request Body Payload
Note: If you send the employee_id in the support request URL as a query parameter, we can better associate it with a user. Example URL: [https://{subdomain}.thefutureis.mobi/1/support_requests?employee_id=12
]
POST:
{
"support_request": {
"text": "I broke my phone",
"requestor_name": "Name Here",
"requestor_number": "1234567890",
"request_type": "Portal Assistance",
"external_source_id": "SN123",
"device_type": "Smart Phone",
"vip": "true"
}
}
Request Type List |
---|
Application Support: iPass |
Application Support (on Device) |
Call Transferred Within Tangoe |
Cancellation Process |
Customer-Side Follow-Up |
Device Activation |
Device Activation and E-mail/EMM Setup |
Device Replacement |
Device Return Instructions |
E-mail Setup/EMM Enrollment |
External Issue |
Feature Change |
International Support |
Policy/Process Question |
Portal Assistance |
Portal Assistance :: Billing Inquiry |
Portal Assistance :: General |
Portal Assistance :: Order Status |
Portal Assistance :: Submit Activity for User |
Portal Assistance :: Upgrade Eligibility Check |
Tech Support |
Tech Support :: Coverage Issue |
Tech Support :: Data Sync |
Tech Support :: Lockout/Password |
Tech Support :: EMM |
Tech Support :: Other |
Tech Support :: Update OS |
Tech Support :: VPN |
Tech Support :: WiFi |
Voicemail Reset |
Device Type List |
---|
Phone |
Tablet |
Machine-to-Machine |
Laptop |
Wearable |
Desktop |
Other |
Data Card |
Signal Booster |
Router |
Pager |
Figure 3:
Here is an example support request response payload.
{
"id": 43413,
"requestor_name": "Insa Dent",
"requestor_number": "(555) 259-6624",
"number_request_is_about": "(555) 259-6624",
"on_behalf_of_id": 1831571,
"line_id": null,
"assigned_to_id": 10833529,
"device_type": "Smart Phone",
"state": "open",
"created_at": "2021-03-14T21:43:16.151-04:00",
"updated_at": "2021-03-14T21:43:16.279-04:00",
"third_party_source": "ServiceNow",
"requestor_id": null,
"external_source_id": null,
"request_type": "application_support_on_device",
"interaction_thread": {
"token": "m339xS26p8ZML2U4RQCJo83H"
},
"interactions": [{
"id": 453453,
"text": "Can't open email on new device.",
"created_at": "2021-03-14T21:43:16.272-04:00",
"person": {
"id": 1831571,
"name_last": "Quackers",
"name_first": "Pinkerton",
"name_middle": null,
"group_id": 1605,
"email": "administrator@sandbox.com",
"login": "administrator@sandbox.com",
"employee_id": "10000",
"created_at": "2014-09-15T16:51:35.404-04:00",
"updated_at": "2021-03-11T16:20:59.689-05:00",
"cost_center": "CEO-001",
"active": true,
"customer_data": {}
}
}],
"on_behalf_of": {
"id": 1831571,
"name_last": "Quackers",
"name_first": "Pinkerton",
"name_middle": null,
"group_id": 1605,
"email": "administrator@sandbox.com",
"login": "administrator@sandbox.com",
"employee_id": "10000",
"created_at": "2014-09-15T16:51:35.404-04:00",
"updated_at": "2021-03-11T16:20:59.689-05:00",
"cost_center": "CEO-001",
"active": true,
"customer_data": {},
"group_name": "Demo Group A"
},
"assigned_to": {
"id": 10833529,
"name_last": "test",
"name_first": "test",
"name_middle": null,
"group_id": 1955,
"email": "sandboxmobility@mobiwm.com",
"login": null,
"employee_id": null,
"created_at": "2019-07-10T15:27:03.857-04:00",
"updated_at": "2020-01-09T10:35:19.534-05:00",
"cost_center": "",
"active": true,
"customer_data": null,
"group_name": "Pi-oneers"
},
"attachments": []
}
Within this response, an interaction thread token is generated. Interactions are essentially work notes or comments in our system. Whenever a new comment is added to a support request, it is added using the interaction endpoint. See Figure 5. This will add comments to the existing ticket.
Figure 4:
Here is a simple example support request closure payload being sent back to the client's system. Other attributes can be sent, depending on what attributes the client needs to update their system.
Closed/Complete Payload
client attribute | value | Tangoe to map |
---|---|---|
number | the requestors phone number | {{ support_request.requestor_number }} |
state | what state to close/resolve | |
work_notes | comments/interactions | {{ support_request.interactions.last.text }} |
Other Webhooks that Tangoe would send Updates back to the Client
- Cancel (what State needed to cancel)
- Interaction/Note Updates (what State needed, this usually might fall under work_in_progress)
- Reassign (what State needed) (reassign back to the client, Tangoe would need an assignment group to reassign back to)
Figure 5: Example interaction body payload using the interaction_thread_token captured from the initial support request post.
https://{subdomain}.thefutureis.mobi/1/interactions
POST:
{
"interaction": {
"interaction_thread_token": "m339xS26p8ZML2U4RQCJo83H",
"text": "Interaction text."
}
}